package us.proyecto.canarios.actions.admin;

import static org.jboss.seam.ScopeType.SESSION;

import java.util.List;

import javax.persistence.EntityManager;

import org.jboss.seam.ScopeType;
import org.jboss.seam.annotations.Begin;
import org.jboss.seam.annotations.In;
import org.jboss.seam.annotations.Logger;
import org.jboss.seam.annotations.Name;
import org.jboss.seam.annotations.Observer;
import org.jboss.seam.annotations.Out;
import org.jboss.seam.annotations.Scope;
import org.jboss.seam.log.Log;
import org.jboss.seam.security.Identity;

import us.proyecto.canarios.dao.UsuarioDAO;
import us.proyecto.canarios.domain.Usuario;

@Name("autenticacion")
@SuppressWarnings( { "unchecked", "unused" })
@Scope(ScopeType.SESSION)
public class AutenticacionAction {
    @In
    EntityManager em;

    @In
    private Identity identity;

    @In(create=true)
    private UsuarioDAO usuarioDAO;

    @Out(required = false, scope = SESSION)
    private Usuario user;

    @Logger
    private static Log log;

    //@Begin(join=true)
    public boolean autenticar() {
        /*List listaObjetos=em.createQuery("select u from Usuario u").getResultList();
        Iterator it=listaObjetos.iterator();
        while(it.hasNext()){
            Usuario aux=(Usuario)it.next();
            log.info(aux.getNombre());
        }*/
        List<Usuario> results = usuarioDAO.getListbywhere(" nombre= #{identity.username} and pass = #{identity.password} and pendiente != true");
        if (results.size() == 0) {
            return false;
        } else {
            user = (Usuario) results.get(0);
            if(user.getAdministrador()){
                identity.addRole("Administrador");
            }else if(user.getEsAsociacion()){
            	identity.addRole("Asociacion");
            	identity.addRole("Usuario genérico");
            }else if(user.getEsCriador()){
            	identity.addRole("Criador");
            	identity.addRole("Usuario genérico");
            }else if(user.getEsJuez()){
            	identity.addRole("Juez");
            	identity.addRole("Usuario genérico");
            }
            return true;
        }
    }
    @Observer("org.jboss.seam.security.alreadyLoggedIn")
    @Begin(join=true)
    public void alreadyLoggedIn() {
        log.info("Ya estas conectado");
    }

}